package com.study.suanfa;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * @description: JosephRingTest 约瑟夫环实现
 * @date: 2020/11/6 23:11
 * @author: hcm
 * @version: 1.0
 */
public class JosephRingTest {
    public static void main(String[] args) {
        lastPeople(9,2);
}
    private static void lastPeople(int n, int k) {
        //首先他是一个圈，也就是一个死循环

        //把这n个人加入这场游戏
        List list = new ArrayList();
        for (int i = 1; i <=n; i++) {
            list.add(i);
        }
        //加入结束

        //当前轮盘指针
        int point = 1;

        //当前轮盘下标
        int index = 0;


        //当人数大于1一直循环
        while (list.size()>1){

            //还需要一个变量，代表当前轮盘下标

            //指针轮转到边界
            //越界，当下表走到尽头，也就是 list.size() == index,跑完一圈，重新初始化
            if(list.size() == index){
                index = 0;
            }
            //当命运的轮盘指向这个人，设轮盘指针为x,point == k,把人杀掉
            if(point == k){
                    //杀人
                    list.remove(index);
                    //杀完人后，list大小会减少一，并且指针初始化,下标则继续走
                    point = 0;
                    //杀完人后从当前位置开始
                    index --;
            }
            //无论如何继续往下走的下标
            index ++;
            point ++;
        }
        //游戏结束，存活者
        System.out.println("存活者-》"+list);

    }
}